﻿#!/usr/bin/perl
use HTML::TreeBuilder;
use URI;

#W poniższym wierszu należy określić listę prawidłowych hostów i domen. Skrypt pominie je w operacji przeszukiwania. 
my @domains = ( "example.com",
                "img.example.com",
                "js.example.com" );

#Parsowanie każdego z plików przekazanego za pośrednictwem wiersza polecenia:
foreach my $file_name (@ARGV) {
    my $tree = HTML::TreeBuilder->new;    
    $tree->parse_file($file_name);
    $tree->elementify();
    #Wyszukanie wszystkich wystąpień znacznika „script".
    @elements = $tree->find("script");
    foreach my $element (@elements) {
        #Pobranie atrybutu SRC.
        my $src  = $element->attr("src");   
        if( $src ) {
            $url  = URI->new($src);
            $host = $url->host;
            #Pominięcie wymienionych domen.
            if(!(grep( /$host/i, @domains ))) {
                #Wyświetlenie informacji na temat hosta na podstawie adresu URL określonego za pomocą atrybutu SRC.
                print $host;
            }
        }
    }
    #Usunięcie drzewa w celu przeszukania kolejnego pliku.
    $tree = $tree->delete;
}
